评估算法性能

评估算法性能

img

蓝桥杯备战资料《算法很美》Chapter2——查找排序(上)

各级别算法复杂度分析:

① n! 弱上界是 nn,因此增长速度非常快,即超慢

② 2n,指数级爆发式增长,增长速度非常快,也是超慢

③ O(n2)、O(n3),一般的竞赛题目是不允许到这种数量级的,很慢

但是一般都可以优化到 nlgn。O(n2)级别的算法有:冒泡排序、插入排序和选择排序等。

④ O(nlgn),及格,一般分治法可以缩小层数到 lgn,而每层的复杂度一般为O(n),

例如:归并排序和快速排序等。

⑤ O(n),比较优秀的算法,比如连续求和最大子数组的线性解。

⑥ O(sqrt(n)),比O(n)更快,这种算法比较少,但不是不存在,比如判断一个数是否为素数。

⑦ O(lgn),很优秀,比如二分查找,但是这种算法往往对于输入数据格式有要求。

⑧ O(1),常量级,这是为数极少的效率最高的算法,多数是数据很规则。

各算法复杂度与运行时间对应关系:

对于一般的测评机来说,CPU 的运算速度大概是 1s 进行 108 次运算(好的CPU可能快10倍)。

算法复杂度1s可以处理的规模
n!11
2n26
n3464
n2104
nlgn4.5*106
n108
lgn2 ^ (10 ^8)
递归算法的复杂度:
递归关系结果举例
T(n) = T(n/2)+O(1)T(n) = O(lgn)二分查找、GCD
T(n) = T(n-1)+O(1)T(n) = O(n)线性查找
T(n) = 2*T(n/2)+O(1)T(n) = O(n)
T(n) = 2*T(n/2)+O(n)T(n) = O(nlgn)归并排序、快速排序
T(n) = 2*T(n/2)+O(nlgn)T(n) = O(n(lgn)2)
T(n) = T(n-1)+O(n)T(n) = O(n2)选择排序、插入排序
T(n) = 2*T(n-1)+O(1)T(n) = O(2n)汉诺塔问题
T(n) = T(n-1)+T(n-2)+O(1)T(n) = O(2n)斐波那契

【END】感谢观看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值